home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # kdebuild - build kde modules
- # $* = modules to build
-
- # copyright (c) 2001 Joseph Cheek, Redmond Linux Corp.
- # joseph@redmondlinux.org, www.redmondlinux.org
- # released under GPL
-
- BADCOMPILE=""
- BADRECOMPILE=""
-
- declare -x CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde
- KDECVSHOME=/opt/redmondlinux/sources/kde
- CVSBRANCH=KDE_2_2_BRANCH
-
- SRPMSOURCEDIR=/usr/src/RedmondLinux/SOURCES
- SRPMSPECDIR=/usr/src/RedmondLinux/SPECS
- FINISHEDRPMDIR=/usr/src/RedmondLinux/RPMS
-
- BUILD_NUM_FILE=/opt/redmondlinux/builds/CURRENT_BUILD
- BUILD_NUM=`cat $BUILD_NUM_FILE`
-
-
- _cvsup() {
- # download latest sources via cvs for $1
-
- # koffice, kdenonbeta don't follow standard CVS tagging
- [ "$1" = "koffice" ] && CVSBRANCH=HEAD
- [ "$1" = "kdenonbeta" ] && CVSBRANCH=HEAD
-
- cd $KDECVSHOME || return 1
- cvs -q up -r "$CVSBRANCH" "$1" || return 1
- cd "$1" || return 1
- [ -f admin/Makefile.common ] &&
- { make -f admin/Makefile.common cvs-clean || return 1 }
- [ -f admin/Makefile.common ] &&
- { make -f admin/Makefile.common || return 1 }
- cd - || return 1
- tar --use-compress-program=bzip2 -cf $1.tar.bz2 $1 || return 1
-
- }
-
-
- _cvsco() {
- # download latest sources via cvs for $1
-
- # koffice, kdenonbeta don't follow standard CVS tagging
- [ "$1" = "koffice" ] && CVSBRANCH=HEAD
- [ "$1" = "kdenonbeta" ] && CVSBRANCH=HEAD
-
- cd $KDECVSHOME || return 1
- rm -rf "$1" || return 1
- cvs -q co -r "$CVSBRANCH" "$1" || return 1
- cd "$1" || return 1
- [ -f admin/Makefile.common ] &&
- { make -f admin/Makefile.common || return 1 }
- cd - || return 1
- tar --use-compress-program=bzip2 -cf $1.tar.bz2 $1 || return 1
-
- }
-
-
- _installsrpm() {
- # install SRPM $1 if needed
-
- #FIXME: install SRPM if needed
-
- return 0
-
- }
-
-
- _getspecfile() {
- # Find the path of the spec file for $1
-
- [ -f $SRPMSPECDIR/$1.spec ] && { echo $SRPMSPECDIR/$1.spec; return }
- [ -f $SRPMSPECDIR/${1}2.spec ] && { echo $SRPMSPECDIR/${1}2.spec; return }
- return 1
-
- }
-
-
- _getname() {
- # Find the Name: in the spec file $1
-
- local a;
-
- a=`grep -i Name.*: "$1" | cut -d : -f 2`
- [ $? != 0 ] && return 1
- echo $a
-
- }
-
-
- _getversion() {
- # Find the Version: in the spec file $1
-
- local a;
-
- a=`grep -i Version.*: "$1" | cut -d : -f 2`
- [ $? != 0 ] && return 1
- echo $a
-
- }
-
-
- _getrelease() {
- # Find the Release: in the spec file $1
-
- local a;
-
- a=`grep -i Release.*: "$1" | cut -d : -f 2`
- [ $? != 0 ] && return 1
- echo $a
-
- }
-
-
- _getrpmfile() {
- # Find the path(s) of the built rpm file(s) for $1
-
- local a FILES=""
-
- SPECFILE=`_getspecfile $1` || return 1
- NAME=`_getname "$SPECFILE"` || return 1
- VERSION=`_getversion "$SPECFILE"` || return 1
- RELEASE=`_getrelease "$SPECFILE"` || return 1
-
- for a in $FINISHEDRPMDIR/i586/$NAME-*$VERSION-$RELEASE.i586.rpm \
- $FINISHEDRPMDIR/noarch/$NAME-*$VERSION-$RELEASE.noarch.rpm \
- $FINISHEDRPMDIR/i386/$NAME-*$VERSION-$RELEASE.i386.rpm; do
- [ -f $a ] && FILES="$FILES $a"
- done
-
- [ "$FILES" != "" ] && { echo $FILES; return }
-
- return 1
-
- }
-
-
- _fixrelease() {
- # Change "Release:" in srpm to show current release
-
- SPECFILE=`_getspecfile $1` || return 1
- perl -pi -e "s/Release.*:.*rl/Release\t\t: ${BUILD_NUM}rl/g" \
- $SPECFILE || return 1
-
- }
-
-
- _preprpm() {
- # prepare RPM $1 for compilation
-
- _installsrpm "$1" || return 1
- cd $KDECVSHOME || return 1
- cp $1.tar.bz2 $SRPMSOURCEDIR || return 1
- _fixrelease "$1"
-
- }
-
-
- _compilerpm() {
- # build the $1 rpm
-
- SPECFILE=`_getspecfile $1` || return 1
- time rpm -ba $SPECFILE || return 1
-
- }
-
-
- _installrpm() {
- # install the $1 rpm
-
- RPMFILE=`_getrpmfile $1` || return 1
- #FIXME: try standard -Uvh first?
- rpm -Uvh --force --nodeps $RPMFILE || return 1
-
- }
-
-
- kdecompile() {
- # compile kde package $1 according to normal rules
-
- _cvsup "$1" || return 1
- _preprpm "$1" || return 1
- _compilerpm "$1" || return 1
- _installrpm "$1" || return 1
-
- }
-
-
- kderecompile() {
- # compile kde package $1 according to recompile rules
-
- _cvsco "$1" || return 1
- _preprpm "$1" || return 1
- _compilerpm "$1" || return 1
- _installrpm "$1" || return 1
-
- }
-
-
- #
- #
- # main()
-
- for a; do
- kdecompile $a
- if [ $? != 0 ]; then
- BADCOMPILE="$BADCOMPILE $a"
- echo "***" Compile error for $a
- fi
- done
-
- echo The following packages didn\'t compile:
- echo $BADCOMPILE
-
- for a in $BADCOMPILE; do
- kderecompile $a
- if [ $? != 0 ]; then
- BADRECOMPILE="$BADRECOMPILE $a"
- echo "***" Compile error for $a
- fi
- done
-
- echo The following packages didn\'t compile:
- echo $BADCOMPILE
-
- echo The following packages didn\'t recompile:
- echo $BADRECOMPILE
-